ExcelVBAPartsCollection Home Excel Reference Manual DownLoad My Profile
Menu Back Next Links Excel Function Manual Myself My BBS


セルの編集 (1)

 





データの複写


1 選択範囲の内容をすべて複写

 セルのデータを複写する方法には、一旦、クリップボードに貼り付けてから目的のセルに複写する方法と、貼り付け先を指定してダイレクトに複写する方法があります。また、コピー元のデータとリンクして複写することもできます。

 コピーには「Copy」メソッドを使用します。クリップボードを経由して貼り付けるときは、Paste メソッドを使用します。Paste メソッドはクリップボードの内容に合うように貼り付け先範囲を調節しますので、貼り付け先範囲は、コピー範囲の大きさにかかわらず、貼り付け先の左上端セルを指定します。
 
 ダイレクトに複写するときは、Copy メソッドの引数として、Direct:=<貼り付け先>で指定します。

1 クリップボードを経由して貼り付け

処理内容:セルA1をセルB1に貼り付けます。(先に貼り付け先を選択)
Sub copy_1()
Worksheets("Sheet1").Select
Range("A1").Copy
Range("B1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub


処理内容:セルA1をセルB1に貼り付けます。(後で貼り付け先を指定)
Sub copy_2()
Worksheets("Sheet1").Select
Range("A1").Copy
ActiveSheet.Paste Destination:=Range("B1")
Application.CutCopyMode = False
End Sub


処理内容:セルA1:A5をセルB1に貼り付けます。(複数セルを貼り付け)
Sub copy_3()
Worksheets("Sheet1").Select
Range("A1:A5").Copy
Range("B1").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub


処理内容:セルA1をセルB1に貼り付けます。(1つのセルを複数セルに貼り付け)
Sub copy_4()
Worksheets("Sheet1").Select
Range("A1").Copy
Range("B1:B5").Select
ActiveSheet.Paste
Application.CutCopyMode = False
End Sub


処理内容:セルA1をセルB1にリンク貼り付けします。
Sub copy_5()
Worksheets("Sheet1").Select
Range("A1").Copy
Range("B1").Select
ActiveSheet.Paste link:=True
Application.CutCopyMode = False
End Sub

2 貼り付け先を指定してダイレクトに貼り付け

処理内容:セルA1をセルB1に貼り付けます。
Sub copy_6()
Worksheets("Sheet1").Select
Range("A1").Copy Destination:=Range("B1")
Application.CutCopyMode = False
End Sub


処理内容:セルA1をセルB1に貼り付けます。(省略形)
Sub copy_7()
Worksheets("Sheet1").Select
Range("A1").Copy Range("B1")
Application.CutCopyMode = False
End Sub


処理内容:セルA1をセルB1に貼り付けます。(超省略形)
Sub copy_8()
Worksheets("Sheet1").Select
[A1].Copy [B1]
Application.CutCopyMode = False
End Sub





2 選択範囲の一部の内容を複写

 セルは、入力された文字列、計算式などのデータのほか、いろいろな書式などが設定されています。これらの「値」「計算式」「書式」などを区別して複写するには、Copy メソッドによりコピーした後、データの貼り付け時に PasteSpecial メソッドを使用します。

PasteSpecial メソッドの構文
  expression.PasteSpecial(Paste, Operation, SkipBlanks, Transpose)

  例1:セルA1の値だけをセルB1に複写します。(Paste メソッドの定数で指定)
    Range("A1").Copy
    Range("B1").PasteSpecial Paste:=xlValues

  例2:セルA1の入力規則だけをセルB1に複写します。(Paste メソッドの定数の番号で指定)
    Range("A1").Copy
    Range("B1").PasteSpecial Paste:=6

PasteSpecial メソッドの引数の内容

引 数

内          容

Paste 省略可能です。指定範囲に何を複写するかを指定します。「書式」にはフォント、表示形式のほか、条件付書式、セルの背景色・塗りつぶし、罫線も含まれます。
定数の代わりに番号で指定することもできます。
番号

定   数

複 写 の 内 容

1 xlAll すべて(値、計算式、書式、入力規則、コメント)
2 xlFormulas 計算式(計算式のほか、文字列・数値も含みます)
3 xlValues 値(計算式の結果として表示される値も含みます)
4 xlFormats 書式
5 xlPasteComments コメント
6 xlDataValidation 入力規則
定数を使用するとエラーになるので、番号で指定
7 xlAllExceptBorders 罫線を除くすべて(値、計算式、罫線以外の書式)
定数を使用するとエラーになるので、番号で指定
8 xlColumnWidths 列幅
定数を使用するとエラーになるので、番号で指定
Operation 省略可能です。コピーした数値と貼り付け先の数値で行う演算の種類を指定します。(コピー元または複写先に計算式が入力されていると、演算が正しく行われないこともあるので注意を要します。)
定数の代わりに番号で指定することもできます。
番号

定   数

演 算 の 内 容

1 xlNone しない  演算を実行しない
2 xlAdd 加算  「複写先+コピー元」の演算を実行
3 xlSubtract 減算  「複写先−コピー元」の演算を実行
4 xlMultiply 乗算  「複写先*コピー元」の演算を実行
5 xlDivide 除算  「複写先/コピー元」の演算を実行
SkipBlanks 省略可能です。クリップボードに含まれる空白のセルを貼り付けの対象にしないようにするには、True を指定します。既定値は False です。
SkipBlanks は、コピー範囲の一部に空白があり、貼り付け先の同じ位置にデータがあるときに、空白を複写しないようにする機能であって、コピー範囲の空白部分を詰めて複写するわけではありません。
Transpose 省略可能です。貼り付けのときにデータの行と列を入れ替えるには、True を指定します。既定値は False です。





データ内容の部分的な複写

処理内容:計算式のみを複写します。
Sub PasteSpecial_1()
Worksheets("Sheet1").Select
Range("A1:A10").Copy
Range("B1").PasteSpecial Paste:=lFormulas
Application.CutCopyMode = False
End Sub


処理内容:コピー元の値を、複写先の値に加算します。(コピー元の空白を無視)
Sub PasteSpecial_2()
Worksheets("Sheet1").Select
Range("A1:A10").Copy
Range("B1").PasteSpecial Operation:=xlAdd, SkipBlanks:=True
Application.CutCopyMode = False
End Sub


処理内容:罫線を除くすべてを複写します。
Sub PasteSpecial_3()
Worksheets("Sheet1").Select
Range("A1:A10").Copy
Range("B1").PasteSpecial Paste:=7
Application.CutCopyMode = False
End Sub

PasteSpecial メソッドを使用しない部分的な複写

処理内容:選択範囲の計算式を複写します。
Sub PasteSpecial_4()
Worksheets("Sheet1").Select
Range("B1:B10").Formula = Range("A1:A10").Formula
Application.CutCopyMode = False
End Sub


処理内容:選択範囲の表示形式の書式のみ複写します
Sub PasteSpecial_5()
Worksheets("Sheet1").Select
Range("B1:B10").NumberFormat=Range("A1:A10").NumberFormat
Application.CutCopyMode = False
End Sub


処理内容:計算式を計算結果の値に変換します。
Sub PasteSpecial_6()
Worksheets("Sheet1").Select
Range("A1:A10").Value = Range("A1:A10").Value
Application.CutCopyMode = False
End Sub


処理内容:オートフィルタで抽出された結果(可視セル)だけ複写します。
Sub PasteSpecial_7()
Worksheets("Sheet1").Select
With Range("A1")
.AutoFilter
.AutoFilter Field:=1, Criteria1:="=りんご"
.CurrentRegion.SpecialCells(xlCellTypeVisible).Copy
Range("B1").PasteSpecial
.AutoFilter
End With
End Sub





3 オートフィル

 オートフィルは、データを連続して複写したり、連続データ(一定の間隔で数値を連続的に変化させる)を作成するときなどに用います。

1 AutoFill メソッドによるオートフィル

 AutoFill メソッドの構文と意味は下記のとおりです。
   expression.AutoFill(Destination, Type)

 expression には、基準となるデータが入っているセルを指定します。
 オートフィルの種類は、引数 Type の定数により指定します。

引  数

内                容

Destination 必ず指定します。オートフィルの書き込み先になる セル範囲を指定します。基準となるデータの入ったセル範囲も含むようにします。
基準セル範囲を 2 つ分指定して、データの数値に間隔がある場合、その差分を加えた連続データを作成することができます。
たとえば、最初のセルの値を 1、次のセルの値を 3 として、2 つのセルを基準セルに指定してオートフィルを行うと、奇数だけの連続データとなります。
Type 省略可能です。リストの種類を表す定数を指定します。
定  数 内  容

書き込み先セル内の数値変化の有無

数  値 日付・時刻 文字列中の数値 計算式
xlFillDefault 既定値 ×
xlFillCopy コピー × × ×
xlFillSeries 連続データ --
xlFillFormats 書式 × × × ×
xlFillValues ×

下記は、年月日のオートフィルです。

xlFillDays 年月日の「日」の部分が連続データとなります
xlFillWeekdays 週日 年月日の「日」の部分が土曜・日曜を飛ばした連続データとなります。
xlFillMonths 年月日の「月」の部分が連続データとなります。
各月の末日を表示するには基準セルの月を末日にしておきます。
xlFillYears 年月日の「年」の部分が連続データとなります

AutoFill メソッドによる連続データ作成

処理内容:数値を増分値1で変化させて複写します。
Sub AutoFill_1()
Worksheets("Sheet1").Select
Range("B1").Value = 1
Range("B1").AutoFill Destination:=Range("B1:B7"), Type:=xlFillSeries
End Sub


処理内容:年間の各月最終日を複写します
Sub AutoFill_2()
Dim dateRange As Range
Worksheets("Sheet1").Select
Set dateRange = Range("A1:A12")
Range("A1").Formula = "2002/1/31"
Range("A1").AutoFill Destination:=dateRange, Type:=xlFillMonths
End Sub





2 DataSeries メソッドによるオートフィル

 DataSeries メソッドの構文と意味は下記のとおりです。
   expression.DataSeries(Rowcol, Type, Date, Step, Stop, Trend)

 expression には、基準となるデータが入っているセルを指定します。
 オートフィルの種類は、引数 Type の定数により指定します。また、数値の増分値( Step )と停止値( Stop )を指定することができます。

引 数

内               容

Rowcol 省略可能です。データを書き込む方向を指定します。この引数を省略すると対象セル範囲のサイズと形状が使われます。

定    数

内               容

xlRows 行方向(左から右)に書き込みます
xlColumns 列方向(上から下)に書き込みます
Type 省略可能です。連続データ作成種類を指定します。

定    数

内  容

説          明

xlDataSeriesLinear 加算 既定値。前のセルに増分値を加算します
xlGrowth 乗算 前のセルに増分値を乗算します
xlChronological 日付 日付の連続データを作成します
xlAutoFill オートフィル オートフィルを実行します
Date 省略可能です。引数 Type が xlChronological のときに、この引数は日付の増加単位です。

定    数

内  容

説          明

xlDay 既定値。年月日の「日」の部分が連続データとなります
xlWeekday 週日 年月日の「日」の部分が土曜・日曜を飛ばした連続データとなります。
xlMonth 年月日の「月」の部分が連続データとなります。
各月の末日を表示するには基準セルの月を末日にしておきます。
xlYear 年月日の「年」の部分が連続データとなります
Step  省略可能です。連続データの増分値です。既定値は 1 です。
Stop 省略可能です。連続データの停止値です。引数を省略すると、対象セル範囲の終端まで繰り返されます。
Trend 省略可能です。対象セル範囲に入力されている値を直線 (加算) または指数曲線 (乗算) にあてはめて予測した結果で、残りのセル範囲を埋めるには、True を指定します。[増分] ボックスに入力された値で連続データを作成するには、False を指定します。既定値は False です。

DataSeries メソッドによる連続複写

処理内容:数値を増分値2で変化させて、列方向に10までの連続数値を作成します。
Sub DataSeries_1()
Worksheets("Sheet1").Select
Range("A1").Value = 2
Range("A1").DataSeries Rowcol:=xlColumns, Type:=xlLinear, _
Date:=xlDay,Step:=2, Stop:=10,Trend:=False
End Sub


処理内容:2002年10月の初日から末日までの土・日を除いた日の連続データを作成します。
Sub DataSeries_2()
Worksheets("Sheet1").Select
Range("B1") = "2002 / 10/ 1"
Range("B1").DataSeries Rowcol:=xlColumns, Type:=xlChronological, _
Date:=xlWeekday, Stop:="2002 / 10 / 31", Trend:=False
End Sub





3 Fill( FillDown,FillRight,FillLeft,FillUp)メソッドによるオートフィル

 Fill メソッドは、セルの内容と書式を複写します。縦横計算の計算式の複写などを簡単に行うことができます。フィル範囲には、基準セルを含めて指定します。

Fill メソッドによる縦横計算

処理内容:行の合計計算式を右方向に複写します。
Sub Fill_1()
Worksheets("Sheet1").Select
Range("A6").Formula = "=SUM(A1:A5)"
Range("A6:D6").FillRight
End Sub


処理内容:列の合計計算式を下方向に複写します。
Sub Fill_2()
Worksheets("Sheet1").Select
Range("E1").Formula = "=SUM(A1:D1)"
Range("E1:E6").FillDown
End Sub





データの消去


1 選択範囲の内容をすべて消去

 セルのデータをすべて消去するには、Clear メソッドにより行います。Clear メソッドで消去される内容は、値、数式、書式、コメントです。

セルの全ての内容消去

処理内容:シートの内容をすべて消去します。
Sub Clear_1()
Worksheets("Sheet1").Select
Cells.Clear
End Sub


処理内容:A列の内容をすべて消去します。
Sub Clear_2()
Worksheets("Sheet1").Select
Columns(1).Clear
End Sub





2 選択範囲の一部の内容を消去

 セルデータの数式と値(ClearContents)、書式(ClearFormats)、コメント(ClearContents)など、セルの内容の一部分のみをクリアする方法です。

セルの一部の内容を消去

処理内容:セルの文字(数式と値)だけをクリアします。
Sub Clear_3()
Worksheets("Sheet1").Select
Range("A1:A5").ClearContents
End Sub


処理内容:セルの書式をクリアします。
Sub Clear_4()
Worksheets("Sheet1").Select
Range("A1:A5").ClearFormats
End Sub


処理内容:セルのコメントをクリアします。
Sub Clear_5()
Worksheets("Sheet1").Select
Range("A1:A5").ClearComments
End Sub


処理内容:セルの値だけをクリアします。
Sub Clear_6()
Worksheets("Sheet1").Select
Range("A1:A5").SpecialCells(xlConstants, 23).ClearContents
End Sub


処理内容:セルの数式だけをクリアします。
Sub Clear_7()
Worksheets("Sheet1").Select
Range("A1:A5").SpecialCells(xlFormulas, 23).ClearContents
End Sub


処理内容:セルの背景色をクリアします。
Sub Clear_8()
Worksheets("Sheet1").Select
Range("A1:A5").Interior.ColorIndex = xlNone
End Sub


処理内容:セルの罫線だけをクリアします。
Sub Clear_9()
Worksheets("Sheet1").Select
Range("A1:A5").Borders.LineStyle = xlNone
End Sub


処理内容:セルのパターン色をクリアします。
Sub Clear_10()
Worksheets("Sheet1").Select
Range("A1:A5").Interior.PatternColorIndex = xlNone
End Sub


処理内容:セルのパターンをクリアします。
Sub Clear_11()
Worksheets("Sheet1").Select
Range("A1:A5").Interior.Pattern = xlSolid
End Sub





Gポイントポイ活 Amazon Yahoo 楽天

無料ホームページ 楽天モバイル[UNLIMITが今なら1円] 海外格安航空券 海外旅行保険が無料!